<?php
/**
 * curl
 * @link      http://book.kfsimi.cn
 * @copyright Copyright (c) 2010-2018 张锋建.
 * @package   apiframe/tools
 * @author    张锋建  mail:1224103366@qq.com
 * @version   1.0 Beta
 */
namespace apiframe\models; //使用命名空间


/*--------------------------------图灵机器人设置---------------------------------*/
   //说明：如果函数参数调用时传有参数，下面默认配置的参数自动失效！以传入参数为准！
   //除了inputImage的url和inputMedia的url被重新定义成tpurl和yyurl外其他末尾参数与
   //官方相同，传入时直接把末尾参数定义成一维数组即可！
   
   
   /*是否必填【是】*/ define('tlurl' , 'http://openapi.tuling123.com/openapi/api/v2');//图灵机器人url地址，在图灵官网获取！
   /*是否必填【是】*/ define('apiKey' , '36c1d9cc6ab9403e9b6f45cf713974e5');//图灵机器人apiKey，在图灵官网获取！
   /*是否必填【是】*/ define('userId' , 'e0f2a8c995b48934');//图灵机器人userId，在图灵官网获取！    
   /*是否必填【否】*/ define('groupId' , '请到图灵官网获取');//图灵机器人groupId，在图灵官网获取！
   /*是否必填【否】*/ define('userIdName' , '请到图灵官网获取');//图灵机器人userIdName，在图灵官网获取！

/*--------------------------------------------------------------------------------*/

/*--------------------------------青云机器人设置---------------------------------*/
   //说明：如果函数参数调用时传有参数，下面默认配置的参数自动失效！以传入参数为准！
   
   /*是否必填【是】*/ define('qyurl' , 'http://api.qingyunke.com/api.php?key=free&appid=0&msg=');//图灵机器人url地址，在图灵官网获取！
   /*是否必填【是】*/ define('msg' , '不说话');//如果调用函数没有传参，会调用这个默认问题！

/*--------------------------------------------------------------------------------*/

//类名与文件名一致
class jiqiren{

 
public function post ($url, $data,$geshi=null) { 
   if ($geshi == 'xml') {        //请求或发生xml或文本格式数据
    	$geshi = 'Content-Type: text/xml;charset=utf-8';
    } elseif ($geshi == 'data') {//请求或发生data格式数据，主要用于文件上传
    	$geshi = 'Content-Type: multipart/form-data;charset=utf-8';
    } elseif ($geshi == 'json') {//请求或发生json格式数据
    	$geshi = 'Content-Type: application/json;charset=utf-8';
    } elseif ($geshi == 'form') {//请求或发生表单格式数据
    	$geshi = 'Content-Type: application/x-www-form-urlencoded';
    } else {                     //如果是全都不是默认输出json格式
    	$geshi = 'Content-Type: application/json;charset=utf-8';	
    }  

    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); //设置缓冲等待时间
    curl_setopt($ch, CURLOPT_HTTPHEADER, array ($geshi));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //传递一个作为HTTP “POST”操作的所有数据的字符串。 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
    // 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码
    // curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
    // curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);// 对认证证书来源的检查
    $data = curl_exec($ch);
    curl_close($ch);                
    return $data;  
}


public function get ($url) {//get网络请求！直接返回服务端数据！
    // 初始化
    $curl = curl_init();
    // 设置url路径
    curl_setopt($curl, CURLOPT_URL, $url);
    // 将 curl_exec()获取的信息以文件流的形式返回，而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true) ;
    // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回
    curl_setopt($curl, CURLOPT_BINARYTRANSFER, true) ;
    // CURLINFO_HEADER_OUT选项可以拿到请求头信息
    curl_setopt($curl, CURLINFO_HEADER_OUT, true);
    // 不验证SSL
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    // 执行
    $data = curl_exec($curl);
    // 打印请求头信息
    // echo curl_getinfo($curl, CURLINFO_HEADER_OUT);
    // 关闭连接
    curl_close($curl);
    // 返回数据
    return $data;
} 

 

public function tuling ($tldata) { //图灵机器人函数，直接返回数组！

	                      /*参数构架说明
     /*注意：输入参数必须包含其中inputText或inputImage或inputMedia的一个属性！*/
                
    if (isset($tldata['apiKey']) && isset($tldata['userId'])) {    	
      $data['userInfo']['apiKey']=$tldata['apiKey'];//机器人标识 ----【是否必须-是】
      $data['userInfo']['userId']=$tldata['userId'];//用户唯一标识 ----【是否必须-是】
    } else {
      $data['userInfo']['apiKey']=apiKey;//机器人标识 ----【是否必须-是】
      $data['userInfo']['userId']=userId;//用户唯一标识 ----【是否必须-是】
    }
    
   if (isset($tldata['groupId']) && isset($tldata['userIdName'])) {    	
      $data['userInfo']['groupId']=$tldata['groupId'];//群聊唯一标识 ----【是否必须-否】
      $data['userInfo']['userIdName']=$tldata['userIdName'];//群内用户昵称 ----【是否必须-否】
    } else {
      $data['userInfo']['groupId']=groupId;//群聊唯一标识 ----【是否必须-否】
      $data['userInfo']['userIdName']=userIdName;//群内用户昵称 ----【是否必须-否】
    }

   if (isset($tldata['tlurl']) && isset($tldata['reqType'])) {    	
      $tlurl=$tldata['tlurl'];//图灵机器人API请求地址 ----【是否必须-是】
      $data['reqType']= $tldata['reqType'];//输入类型:0-文本(默认)、1-图片、2-音频
    } else {
      $tlurl=tlurl;//图灵机器人API请求地址 ----【是否必须-是】
      $data['reqType']= 0;//输入类型:0-文本(默认)、1-图片、2-音频
    }
    
    if (isset($tldata['text'])) {
		$data['perception']['inputText']['text']=$tldata['text'];//文本信息三项选一 ----【是否必须-否】
    }
    if (isset($tldata['tpurl'])) {
		$data['perception']['inputImage']['url']=$tldata['tpurl'];//图片信息三项选一 ----【是否必须-否】
    }
    if (isset($tldata['yyurl'])) {
		$data['perception']['inputMedia']['url']=$tldata['yyurl'];//音频信息三项选一 ----【是否必须-否】
    }
    if (isset($tldata['city'])) {
		$data['perception']['selfInfo']['location']['city']=$tldata['city'];//客户端属性(所在城市)----【是否必须-是】
    }
    if (isset($tldata['province'])) {
		$data['perception']['selfInfo']['location']['province']=$tldata['province'];//客户端属性(省份)----【是否必须-否】
    }
    if (isset($tldata['street'])) {
		$data['perception']['selfInfo']['location']['street']=$tldata['street'];//客户端属性(街道)----【是否必须-否】
    }

    $data = json_encode($data);
    $data =json_decode($this->post($tlurl,$data));

    return $data;
}

public function qingyun ($qydata) { //青云聊天机器人函数！直接返回数组！
   if (isset($qydata)) {      
      $msg = $qydata;//接收传参数据！
    } else {
      $msg = msg;//调用默认数据！
    }
  $data =json_decode($this->get(qyurl.$msg),true);
  return $data;
}	






public function dingding_zidingyi ($url, $data) {  
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); //设置缓冲等待时间
    curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json;charset=utf-8'));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //传递一个作为HTTP “POST”操作的所有数据的字符串。 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
    // 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码
    // curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
    // curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);// 对认证证书来源的检查
    $data = curl_exec($ch);
    curl_close($ch);                
    return $data;  
}  






}